package bufferedstream01;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/*
* BufferedInputSteam
*  构造方法:
*    BufferedInputStream(InputStream in)
          创建一个 BufferedInputStream 并保存其参数，即输入流 in，以便将来使用。
      int read()
          参见 InputStream 的 read 方法的常规协定。
      public int read(byte[] b)
         throws IOException从此输入流中将 byte.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前，此方法将阻塞。

     BufferedInputSteam底层也会开辟一个默认长度为8192的字节数组,将来读到数据都会存储到这个字节数组中去
* */
public class BufferedInputStream02 {
	public static void main(String[] args) throws IOException {
		//method01();
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream("day23/8.txt"));

		byte[] bytes = new byte[2];
		int length = bis.read(bytes);//返回的是读取的有效字节个数
		                           //先把文件中的字节尽可能多的读取到底层的8192字节数组中去
		                           //将8192字节数组的前两个字节拷贝到bytes数组中去
		System.out.println(new String(bytes,0,length));

		bis.close();
	}

	private static void method01() throws IOException {
		//1.通过FileInputStream关联一个文件
		FileInputStream fis = new FileInputStream("day23/8.txt");
		//2.将fis传给BufferedInputStream构造方法
		BufferedInputStream bis = new BufferedInputStream(fis);
		//3.读取文件中的字节
		int b = bis.read();//当我们调用read()方法,底层会从文件中读取尽可能多的字节(一次最多8192字节),存储到底层开辟的8192字节数组中去
		//后期使用的文件中的字节都是从8192字节数组去取
		System.out.println(b);

		//4.关流释放资源
		bis.close();
	}
}
